Esempio n. 1
0
    def take_action(self, parsed_args):
        env_name = parsed_args.env_name

        command_string = parsed_args.command_string

        response = server.TakeAction().get_environment(env_name)
        if response:
            response_json = json.loads(response)
            env_output_config = ast.literal_eval(
                response_json['data']['env_definition'])
            type = env_output_config['environment']['app_deployment']['type']
            if type == 'local-docker':
                print(
                    "Shell functionality not available for local deployment target."
                )
                print("You can use docker commands from command-line instead.")
                exit()
            if response_json['data']['status'] == 'available':
                print("Running the command %s on the environment..." %
                      command_string)
                response = server.TakeAction().run_command(
                    env_name, command_string)
                print(response)
            else:
                print("Environment %s is not in appropriate state." % env_name)
Esempio n. 2
0
    def take_action(self, parsed_args):
        env_name = parsed_args.env_name

        force_flag = ''
        # if parsed_args.force:
        #    force_flag = 'true'
        server.TakeAction().delete_environment(env_name, force_flag=force_flag)
Esempio n. 3
0
    def take_action(self, parsed_args):
        app_name = parsed_args.app_name

        app_info = {}
        app_location = os.getcwd()
        app_folder_name = self._get_app_folder_name(app_location)
        app_info['app_folder_name'] = app_folder_name
        server.TakeAction().redeploy_app(app_location, app_info, app_names)
Esempio n. 4
0
    def take_action(self, parsed_args):
        app_name = parsed_args.app_name

        print(
            "Retrieving application deployment and runtime logs from the COE..."
        )
        response = server.TakeAction().get_app_logs(app_name)
        print(response)
Esempio n. 5
0
    def take_action(self, parsed_args):
        cont_info = {}
        cont_name = parsed_args.container_name
        cont_info['cont_name'] = cont_name

        repository = parsed_args.repository.strip()
        cont_info['dep_target'] = repository

        if repository != 'gcr' and repository != 'ecr' and repository != 'local':
            print(
                "Incorrect repository destination specified. Should be one of: ecr, gcr, local"
            )
            exit()

        if repository == 'gcr':
            if not common.cloud_setup('gcloud'):
                print(
                    "Cloud setup not done for Google cloud. Please run 'cld setup gcloud' and then ./<cloudark-dir>/restart-cloudark.sh"
                )
                exit()
            project_id = ''
            if not parsed_args.project_id:
                project_id = raw_input("Project ID>")
            else:
                project_id = parsed_args.project_id

            cont_info['project'] = project_id

        if repository == 'ecr':
            if not common.cloud_setup('aws'):
                print(
                    "Cloud setup not done for AWS cloud. Please run 'cld setup aws' and then ./<cloudark-dir>/restart-cloudark.sh"
                )
                exit()

        cont_df_location = os.getcwd()
        if not os.path.exists(cont_df_location + "/Dockerfile"):
            print("There is no Dockerfile in this directory. Exiting.")
            exit()
        cont_df_folder_name = common.get_app_folder_name(cont_df_location)
        cont_info['cont_df_folder_name'] = cont_df_folder_name

        source_dir = os.getcwd()
        server.TakeAction().create_container(source_dir, cont_info)
Esempio n. 6
0
    def take_action(self, parsed_args):
        app_info = {}
        app_info['app_name'] = parsed_args.app_name
        app_info['env_name'] = parsed_args.env_name
        app_info['app_yaml'] = parsed_args.app_file

        is_valid_app_format = common.validate_app_format(parsed_args.app_file)

        if not is_valid_app_format:
            print("Invalid app format:")
            print("Currently supported formats are:")
            print("- CloudARK's app yaml")
            print("- Kubernetes's format with Pod definitions only")
            print("  - https://github.com/cloud-ark/cloudark/issues/200")
            exit()

        # Check if app_file contains container_port defined or not
        try:
            fp = open(parsed_args.app_file, "r")
            app_def = yaml.load(fp.read())
            if 'app' in app_def:
                if app_def['app'] is None:
                    print("app yaml cannot be empty.")
                    exit()
                if 'container_port' not in app_def['app']:
                    print(
                        "'container_port' attribute is missing from app definition."
                    )
                    exit()
                elif 'image' not in app_def['app']:
                    print("'image' attribute is missing from app definition.")
                    exit()
        except Exception as e:
            print("Could not parse %s" % parsed_args.app_file)
            exit()

        app_location = os.getcwd()
        app_folder_name = common.get_app_folder_name(app_location)
        app_info['app_folder_name'] = app_folder_name
        server.TakeAction().deploy_app(app_location, app_info)
Esempio n. 7
0
    def take_action(self, parsed_args):
        app_name = parsed_args.app_name

        server.TakeAction().delete_app(app_name)
Esempio n. 8
0
    def take_action(self, parsed_args):
        container_name = parsed_args.container_name

        response = server.TakeAction().get_container(container_name)
        print(response)
Esempio n. 9
0
    def take_action(self, parsed_args):
        env_name = parsed_args.env_name

        response = server.TakeAction().get_environment(env_name)
        print(response)
Esempio n. 10
0
 def take_action(self, parsed_args):
     response = server.TakeAction().get_app_list()
     print(response)
Esempio n. 11
0
 def take_action(self, parsed_args):
     response = server.TakeAction().get_resources()
     print(response)
Esempio n. 12
0
    def take_action(self, parsed_args):

        env_name = parsed_args.env_name

        is_name_invalid = common.check_env_name(env_name,
                                                not_allowed_regex_list)

        if is_name_invalid or len(env_name) > 10:
            print(
                "Invalid environment name. Please follow these constraints for env name:"
            )
            print("- Must be upto 10 characters in length.")
            print("- May contain alphanumeric characters or hyphens.")
            print("- First character must be a letter.")
            print(
                "- Cannot end with a hyphen or contain two consecutive hyphens."
            )
            exit(0)

        if not env_name:
            env_name = raw_input("Please enter name for the environment>")

        file_name = parsed_args.file_name
        if not file_name:
            file_name = raw_input("Please enter " + env_file_request_string +
                                  ">")

        try:
            fp = open(file_name, "r")
        except Exception as e:
            print(e)
            exit()

        environment_def = ''
        try:
            environment_def = yaml.load(fp.read())
            # TODO(devdatta): Verify that each resource definition contains the 'type' attribute
        except Exception as exp:
            print("Error parsing %s" % file_name)
            print(exp)
            exit()

        cloud_list = common.parse_clouds(environment_def)

        setup_not_done = False
        for cloud in cloud_list:
            if not common.cloud_setup(cloud):
                setup_not_done = True
                print(
                    "Setup not done for cloud %s. Run 'cld setup %s' to do the setup."
                    % (cloud, cloud))
                print(
                    "Once setup is done, restart cloudark server: ./<cloudark-dir>/restart-cloudark.sh"
                )

        if setup_not_done:
            exit()

        if 'app_deployment' not in environment_def['environment']:
            print(
                "app_deployment attribute missing from environment definition."
            )
            exit()
        if environment_def['environment']['app_deployment'][
                'target'] == 'gcloud':
            project_id = ''
            if not parsed_args.project_id:
                project_id = raw_input("Project ID>")
            else:
                project_id = parsed_args.project_id
            environment_def['environment']['app_deployment'][
                'project'] = project_id.strip()

            zone = ''
            cloudark_google_setup_details_path = APP_STORE_PATH + "/google-creds-cloudark"
            fp = open(cloudark_google_setup_details_path, "r")
            line = fp.readline()
            parts = line.split(":")
            zone = parts[1]

            environment_def['environment']['app_deployment'][
                'project'] = project_id
            environment_def['environment']['app_deployment']['zone'] = zone

        server.TakeAction().create_environment(env_name, environment_def)
Esempio n. 13
0
    def take_action(self, parsed_args):
        cont_name = parsed_args.cont_name

        server.TakeAction().delete_container(cont_name)
Esempio n. 14
0
    def take_action(self, parsed_args):
        app_name = parsed_args.app_name

        response = server.TakeAction().get_app(app_name)
        print(response)