Skip to content
This repository has been archived by the owner on Jan 25, 2021. It is now read-only.

Commit

Permalink
add name of domain delegation
Browse files Browse the repository at this point in the history
  • Loading branch information
BolaNasr committed May 18, 2020
1 parent 5efa5a0 commit 3feaef0
Showing 1 changed file with 89 additions and 52 deletions.
Original file line number Diff line number Diff line change
@@ -1,57 +1,94 @@
from Jumpscale import j


def chat(bot):
class DomainDelegation(j.servers.chatflow.get_class()):
"""
"""
user_form_data = {}
user_info = bot.user_info()
j.sal.reservation_chatflow.validate_user(user_info)
form = bot.new_form()
domain = form.string_ask("Please enter a domain name to delegate", required=True)
gateways = j.sal.reservation_chatflow.gateway_list(bot)
if not gateways:
return bot.stop("No available gateway")
options = sorted(list(gateways.keys()))
gateway_choice = form.drop_down_choice("Please choose a gateway", options, required=True)
form.ask()
user_form_data["Domain"] = domain.value

gateway = gateways[gateway_choice.value]
gateway_id = gateway.node_id
user_form_data["Gateway"] = gateway_id
expiration = bot.datetime_picker(
"Please enter solution expiration time.",
required=True,
min_time=[3600, "Date/time should be at least 1 hour from now"],
default=j.data.time.epoch + 3900,
)
user_form_data["Expiration"] = j.data.time.secondsToHRDelta(expiration - j.data.time.epoch)

if gateway.free_to_use:
currency = "FreeTFT"
else:
currency = "TFT"

reservation = j.sal.zosv2.reservation_create()
j.sal.zosv2.gateway.delegate_domain(reservation=reservation, node_id=gateway_id, domain=domain.value)

resv_id = j.sal.reservation_chatflow.reservation_register_and_pay(
reservation, expiration, customer_tid=j.me.tid, currency=currency, bot=bot
)

j.sal.reservation_chatflow.reservation_save(
resv_id, user_form_data["Domain"], "tfgrid.solutions.delegated_domain.1", user_form_data
)
res = """\
# Delegated your domain successfully
Reservation id: {{reservation.id}}
Please create an `NS` record in your dns manager for domain: `{{domain}}` pointing to:
{% for dns in gateway.dns_nameserver -%}
- {{dns}}
{% endfor %}
"""
res = j.tools.jinja2.template_render(text=res, gateway=gateway, domain=domain.value, reservation=reservation)
bot.md_show(j.core.text.strip(res))

steps = ["domain_delegation_name", "domain_name", "expiration_time", "domain_pay", "success"]

@j.baseclasses.chatflow_step(title="Domain delegation name")
def domain_delegation_name(self):
user_info = self.user_info()
self.user_form_data = {}
j.sal.reservation_chatflow.validate_user(user_info)
self.model = j.threebot.packages.tfgrid_solutions.tfgrid_solutions.bcdb_model_get(
"tfgrid.solutions.delegated_domain.1"
)
self.user_form_data["chatflow"] = "delegated_domain"
self.user_form_data["Solution name"] = j.sal.reservation_chatflow.solution_name_add(
self, self.model, msg="Please add a name for your domain delegtaion"
)

@j.baseclasses.chatflow_step(title="Domain name & Choose gateway")
def domain_name(self):
form = self.new_form()
domain = form.string_ask("Please enter a domain name to delegate", required=True)
gateways = j.sal.reservation_chatflow.gateway_list(self)
if not gateways:
return self.stop("No available gateway")
options = sorted(list(gateways.keys()))
gateway_choice = form.drop_down_choice("Please choose a gateway", options, required=True)
form.ask()
self.user_form_data["Domain"] = domain.value
self.gateway = gateways[gateway_choice.value]
self.gateway_id = self.gateway.node_id
self.user_form_data["Gateway"] = self.gateway_id

@j.baseclasses.chatflow_step(title="Expiration time")
def expiration_time(self):
self.expiration = self.datetime_picker(
"Please enter solution expiration time.",
required=True,
min_time=[3600, "Date/time should be at least 1 hour from now"],
default=j.data.time.epoch + 3900,
)
self.user_form_data["Expiration"] = j.data.time.secondsToHRDelta(self.expiration - j.data.time.epoch)

@j.baseclasses.chatflow_step(title="Payment", disable_previous=True)
def domain_pay(self):
if self.gateway.free_to_use:
currency = "FreeTFT"
else:
currency = "TFT"

self.reservation = j.sal.zosv2.reservation_create()
j.sal.zosv2.gateway.delegate_domain(
reservation=self.reservation, node_id=self.gateway_id, domain=self.user_form_data["Domain"]
)

res = j.sal.reservation_chatflow.solution_model_get(
self.user_form_data["Solution name"], "tfgrid.solutions.delegated_domain.1", self.user_form_data
)
self.reservation = j.sal.reservation_chatflow.reservation_metadata_add(self.reservation, res)

self.resv_id = j.sal.reservation_chatflow.reservation_register_and_pay(
self.reservation, self.expiration, customer_tid=j.me.tid, currency=currency, bot=self
)

@j.baseclasses.chatflow_step(title="Success", disable_previous=True)
def success(self):
j.sal.reservation_chatflow.reservation_save(
self.resv_id,
self.user_form_data["Solution name"],
"tfgrid.solutions.delegated_domain.1",
self.user_form_data,
)

res = """\
# Delegated your domain successfully
Reservation id: {{reservation.id}}
Please create an `NS` record in your dns manager for domain: `{{domain}}` pointing to:
{% for dns in gateway.dns_nameserver -%}
- {{dns}}
{% endfor %}
"""
res = j.tools.jinja2.template_render(
text=res, gateway=self.gateway, domain=self.user_form_data["Domain"], reservation=self.reservation
)
self.md_show(j.core.text.strip(res))


chat = DomainDelegation

0 comments on commit 3feaef0

Please sign in to comment.