diff options
| author | Roy Ben-Shabat <Roy@Twine-s.com> | 2020-02-03 19:57:18 +0200 |
|---|---|---|
| committer | Roy Ben-Shabat <Roy@Twine-s.com> | 2020-02-03 19:57:18 +0200 |
| commit | 384ef8966066b6c2ee973b906ff78418f533f174 (patch) | |
| tree | d8c568a722e2ff113ca3176013d80593fdd64cd2 /Software | |
| parent | 45e7cad9ca890376374b9485bac7818ccbc4d70e (diff) | |
| download | Tango-384ef8966066b6c2ee973b906ff78418f533f174.tar.gz Tango-384ef8966066b6c2ee973b906ff78418f533f174.zip | |
Working on Azure Utils.
Diffstat (limited to 'Software')
13 files changed, 1788 insertions, 35 deletions
diff --git a/Software/DB/SQLExaminer Projects/GENERAL_ENV_UPGRADE.sdeproj b/Software/DB/SQLExaminer Projects/GENERAL_ENV_UPGRADE.sdeproj new file mode 100644 index 000000000..300a67594 --- /dev/null +++ b/Software/DB/SQLExaminer Projects/GENERAL_ENV_UPGRADE.sdeproj @@ -0,0 +1,1116 @@ +<SqlDataExaminer version="21"> + <Sources> + <Source id="1"> + <EngineType>MsSqlAzure</EngineType> + <StorageType>LiveDb</StorageType> + <ServerName>twine.database.windows.net</ServerName> + <Database>Tango_DEV</Database> + <WinAuth>False</WinAuth> + <AzureAuthMode>SqlServer</AzureAuthMode> + <Login>Roy</Login> + <Password>Aa123456</Password> + <SavePasswords>true</SavePasswords> + </Source> + <Source id="2"> + <EngineType>MsSqlAzure</EngineType> + <StorageType>LiveDb</StorageType> + <ServerName>twine.database.windows.net</ServerName> + <Database>Tango_ALPHA</Database> + <WinAuth>False</WinAuth> + <AzureAuthMode>SqlServer</AzureAuthMode> + <Login>Roy</Login> + <Password>Aa123456</Password> + <SavePasswords>true</SavePasswords> + </Source> + </Sources> + <Items> + <Item name="dbo.ACTION_LOGS" type="table"> + <Columns> + <Column name="GUID" key="true" /> + <Column name="ID" /> + <Column name="LAST_UPDATED" /> + <Column name="TYPE" /> + <Column name="USER_GUID" /> + <Column name="RELATED_OBJECT_NAME" /> + <Column name="RELATED_OBJECT_GUID" /> + <Column name="MESSAGE" /> + <Column name="DIFFERENCE" /> + </Columns> + </Item> + <Item name="dbo.ADDRESSES" type="table"> + <Columns> + <Column name="GUID" key="true" /> + <Column name="ID" /> + <Column name="LAST_UPDATED" /> + <Column name="ADDRESS_STRING" /> + <Column name="LOCALITY" /> + <Column name="COUNTRY" /> + <Column name="CITY" /> + <Column name="STATE" /> + <Column name="COUNTRY_CODE" /> + <Column name="POSTAL_CODE" /> + </Columns> + </Item> + <Item name="dbo.APPLICATION_DISPLAY_PANEL_VERSIONS" type="table" extracted="True"> + <Columns> + <Column name="GUID" key="true" /> + <Column name="ID" /> + <Column name="LAST_UPDATED" /> + <Column name="VERSION" /> + <Column name="NAME" /> + </Columns> + </Item> + <Item name="dbo.APPLICATION_FIRMWARE_VERSIONS" type="table" extracted="True"> + <Columns> + <Column name="GUID" key="true" /> + <Column name="ID" /> + <Column name="LAST_UPDATED" /> + <Column name="VERSION" /> + <Column name="NAME" /> + </Columns> + </Item> + <Item name="dbo.APPLICATION_OS_VERSIONS" type="table" extracted="True"> + <Columns> + <Column name="GUID" key="true" /> + <Column name="ID" /> + <Column name="LAST_UPDATED" /> + <Column name="VERSION" /> + <Column name="NAME" /> + </Columns> + </Item> + <Item name="dbo.BRUSH_STOPS" type="table"> + <Columns> + <Column name="GUID" key="true" /> + <Column name="ID" /> + <Column name="LAST_UPDATED" /> + <Column name="SEGMENT_GUID" /> + <Column name="COLOR_SPACE_GUID" /> + <Column name="OFFSET_PERCENT" /> + <Column name="STOP_INDEX" /> + <Column name="CYAN" /> + <Column name="MAGENTA" /> + <Column name="YELLOW" /> + <Column name="BLACK" /> + <Column name="RED" /> + <Column name="GREEN" /> + <Column name="BLUE" /> + <Column name="L" /> + <Column name="A" /> + <Column name="B" /> + <Column name="V0" /> + <Column name="V0_DIV" /> + <Column name="V1" /> + <Column name="V1_DIV" /> + <Column name="V2" /> + <Column name="V2_DIV" /> + <Column name="V3" /> + <Column name="V3_DIV" /> + <Column name="V4" /> + <Column name="V4_DIV" /> + <Column name="V5" /> + <Column name="V5_DIV" /> + <Column name="V6" /> + <Column name="V6_DIV" /> + <Column name="V7" /> + <Column name="V7_DIV" /> + <Column name="CORRECTED" /> + <Column name="COLOR_CATALOG_GUID" /> + <Column name="COLOR_CATALOGS_ITEM_GUID" /> + <Column name="IS_TRANSPARENT" /> + </Columns> + </Item> + <Item name="dbo.CARTRIDGE_TYPES" type="table" extracted="True"> + <Columns> + <Column name="GUID" key="true" /> + <Column name="ID" /> + <Column name="LAST_UPDATED" /> + <Column name="CODE" /> + <Column name="NAME" /> + </Columns> + </Item> + <Item name="dbo.CATS" type="table"> + <Columns> + <Column name="GUID" key="true" /> + <Column name="ID" /> + <Column name="LAST_UPDATED" /> + <Column name="NAME" /> + <Column name="MACHINE_GUID" /> + <Column name="RML_GUID" /> + <Column name="LIQUID_TYPE_GUID" /> + <Column name="DATA" /> + </Columns> + </Item> + <Item name="dbo.CCTS" type="table"> + <Columns> + <Column name="GUID" key="true" /> + <Column name="ID" /> + <Column name="LAST_UPDATED" /> + <Column name="NAME" /> + <Column name="DESCRIPTION" /> + <Column name="FILE_NAME" /> + <Column name="DATA" /> + </Columns> + </Item> + <Item name="dbo.COLOR_CATALOGS" type="table"> + <Columns> + <Column name="GUID" key="true" /> + <Column name="ID" /> + <Column name="LAST_UPDATED" /> + <Column name="COMPANY" /> + <Column name="NAME" /> + <Column name="DESCRIPTION" /> + <Column name="DESIGN_TYPE" /> + <Column name="LOGO" /> + <Column name="IMAGE" /> + </Columns> + </Item> + <Item name="dbo.COLOR_CATALOGS_GROUPS" type="table"> + <Columns> + <Column name="GUID" key="true" /> + <Column name="ID" /> + <Column name="LAST_UPDATED" /> + <Column name="NAME" /> + <Column name="GROUP_INDEX" /> + <Column name="COLOR_CATALOG_GUID" /> + </Columns> + </Item> + <Item name="dbo.COLOR_CATALOGS_ITEMS" type="table"> + <Columns> + <Column name="GUID" key="true" /> + <Column name="ID" /> + <Column name="LAST_UPDATED" /> + <Column name="COLOR_CATALOGS_GROUP_GUID" /> + <Column name="CODE" /> + <Column name="NAME" /> + <Column name="ITEM_INDEX" /> + <Column name="CYAN" /> + <Column name="MAGENTA" /> + <Column name="YELLOW" /> + <Column name="BLACK" /> + <Column name="RED" /> + <Column name="GREEN" /> + <Column name="BLUE" /> + <Column name="L" /> + <Column name="A" /> + <Column name="B" /> + <Column name="PROCESS_PARAMETERS_TABLE_INDEX" /> + </Columns> + </Item> + <Item name="dbo.COLOR_CATALOGS_ITEMS_RECIPES" type="table"> + <Columns> + <Column name="GUID" key="true" /> + <Column name="ID" /> + <Column name="LAST_UPDATED" /> + <Column name="COLOR_CATALOGS_ITEM_GUID" /> + <Column name="RML_GUID" /> + <Column name="CYAN" /> + <Column name="MAGENTA" /> + <Column name="YELLOW" /> + <Column name="BLACK" /> + <Column name="PROCESS_PARAMETERS_TABLE_INDEX" /> + </Columns> + </Item> + <Item name="dbo.COLOR_SPACES" type="table" extracted="True"> + <Columns> + <Column name="GUID" key="true" /> + <Column name="ID" /> + <Column name="LAST_UPDATED" /> + <Column name="CODE" /> + <Column name="NAME" /> + <Column name="DESCRIPTION" /> + <Column name="THUMBNAIL" /> + </Columns> + </Item> + <Item name="dbo.CONFIGURATIONS" type="table"> + <Columns> + <Column name="GUID" key="true" /> + <Column name="ID" /> + <Column name="LAST_UPDATED" /> + <Column name="APPLICATION_OS_VERSION_GUID" /> + <Column name="APPLICATION_FIRMWARE_VERSION_GUID" /> + <Column name="APPLICATION_DISPLAY_PANEL_VERSION_GUID" /> + <Column name="EMBEDDED_FIRMWARE_VERSION_GUID" /> + <Column name="HARDWARE_VERSION_GUID" /> + <Column name="HARDWARE_CONFIGURATION_STRING" /> + </Columns> + </Item> + <Item name="dbo.CONTACTS" type="table"> + <Columns> + <Column name="GUID" key="true" /> + <Column name="ID" /> + <Column name="LAST_UPDATED" /> + <Column name="FIRST_NAME" /> + <Column name="LAST_NAME" /> + <Column name="FULL_NAME" /> + <Column name="EMAIL" /> + <Column name="PHONE_NUMBER" /> + <Column name="FAX" /> + </Columns> + </Item> + <Item name="dbo.CUSTOMERS" type="table"> + <Columns> + <Column name="GUID" key="true" /> + <Column name="ID" /> + <Column name="LAST_UPDATED" /> + <Column name="ORGANIZATION_GUID" /> + <Column name="NAME" /> + </Columns> + </Item> + <Item name="dbo.DISPENSER_TYPES" type="table" extracted="True"> + <Columns> + <Column name="GUID" key="true" /> + <Column name="ID" /> + <Column name="LAST_UPDATED" /> + <Column name="CODE" /> + <Column name="NAME" /> + <Column name="CAPACITY" /> + </Columns> + </Item> + <Item name="dbo.DISPENSERS" type="table"> + <Columns> + <Column name="GUID" key="true" /> + <Column name="ID" /> + <Column name="LAST_UPDATED" /> + <Column name="SERIAL_NUMBER" /> + <Column name="DISPENSER_TYPE_GUID" /> + <Column name="NL_PER_PULSE" /> + <Column name="PART_NUMBER" /> + <Column name="PCB_SERIAL" /> + <Column name="PCB_VERSION" /> + <Column name="PRODUCTION_DATE" /> + <Column name="CALIBRATION_DATA" /> + </Columns> + </Item> + <Item name="dbo.EMBEDDED_FIRMWARE_VERSIONS" type="table" extracted="True"> + <Columns> + <Column name="GUID" key="true" /> + <Column name="ID" /> + <Column name="LAST_UPDATED" /> + <Column name="VERSION" /> + <Column name="NAME" /> + </Columns> + </Item> + <Item name="dbo.EVENT_TYPES" type="table" extracted="True"> + <Columns> + <Column name="GUID" key="true" /> + <Column name="ID" /> + <Column name="LAST_UPDATED" /> + <Column name="CODE" /> + <Column name="NAME" /> + <Column name="TITLE" /> + <Column name="DESCRIPTION" /> + <Column name="TECHNICAL_DESCRIPTION" /> + <Column name="COMPONENT_INDEX" /> + <Column name="EVENT_CATEGORY" /> + <Column name="EVENT_GROUP" /> + <Column name="EVENT_NOTIFICATION_TIME" /> + <Column name="EVENT_ACTIONS" /> + <Column name="REQUIRES_USER_INTERVENTION" /> + <Column name="GUIDANCE" /> + </Columns> + </Item> + <Item name="dbo.FIBER_SHAPES" type="table" extracted="True"> + <Columns> + <Column name="GUID" key="true" /> + <Column name="ID" /> + <Column name="LAST_UPDATED" /> + <Column name="NAME" /> + <Column name="CODE" /> + </Columns> + </Item> + <Item name="dbo.FIBER_SYNTHS" type="table" extracted="True"> + <Columns> + <Column name="GUID" key="true" /> + <Column name="ID" /> + <Column name="LAST_UPDATED" /> + <Column name="NAME" /> + <Column name="CODE" /> + </Columns> + </Item> + <Item name="dbo.HARDWARE_BLOWER_TYPES" type="table" extracted="True"> + <Columns> + <Column name="GUID" key="true" /> + <Column name="ID" /> + <Column name="LAST_UPDATED" /> + <Column name="CODE" /> + <Column name="NAME" /> + <Column name="DESCRIPTION" /> + </Columns> + </Item> + <Item name="dbo.HARDWARE_BLOWERS" type="table"> + <Columns> + <Column name="GUID" key="true" /> + <Column name="ID" /> + <Column name="LAST_UPDATED" /> + <Column name="HARDWARE_BLOWER_TYPE_GUID" /> + <Column name="HARDWARE_VERSION_GUID" /> + <Column name="ENABLED" /> + <Column name="VOLTAGE" /> + <Column name="HEATING_VOLTAGE" /> + <Column name="ACTIVE" /> + </Columns> + </Item> + <Item name="dbo.HARDWARE_BREAK_SENSOR_TYPES" type="table" extracted="True"> + <Columns> + <Column name="GUID" key="true" /> + <Column name="ID" /> + <Column name="LAST_UPDATED" /> + <Column name="CODE" /> + <Column name="NAME" /> + <Column name="DESCRIPTION" /> + </Columns> + </Item> + <Item name="dbo.HARDWARE_BREAK_SENSORS" type="table"> + <Columns> + <Column name="GUID" key="true" /> + <Column name="ID" /> + <Column name="LAST_UPDATED" /> + <Column name="HARDWARE_BREAK_SENSOR_TYPE_GUID" /> + <Column name="HARDWARE_VERSION_GUID" /> + <Column name="ENABLED" /> + <Column name="DE_BOUNCE_TIME_MILLI" /> + <Column name="ACTIVE" /> + </Columns> + </Item> + <Item name="dbo.HARDWARE_DANCER_TYPES" type="table" extracted="True"> + <Columns> + <Column name="GUID" key="true" /> + <Column name="ID" /> + <Column name="LAST_UPDATED" /> + <Column name="CODE" /> + <Column name="NAME" /> + <Column name="DESCRIPTION" /> + </Columns> + </Item> + <Item name="dbo.HARDWARE_DANCERS" type="table"> + <Columns> + <Column name="GUID" key="true" /> + <Column name="ID" /> + <Column name="LAST_UPDATED" /> + <Column name="HARDWARE_DANCER_TYPE_GUID" /> + <Column name="HARDWARE_VERSION_GUID" /> + <Column name="GRADUAL" /> + <Column name="K" /> + <Column name="X" /> + <Column name="PULSE_PER_MM_SPRING" /> + <Column name="MAXIMAL_MOVEMENT_MM" /> + <Column name="ZERO_POINT" /> + <Column name="RESOLUTION_BITS" /> + <Column name="ARM_LENGTH" /> + <Column name="ASSEMBLY_DIRECTION_RIGHT" /> + <Column name="ACCELERATE_ON_TENSION_RAISE" /> + <Column name="ACTIVE" /> + </Columns> + </Item> + <Item name="dbo.HARDWARE_MOTOR_TYPES" type="table" extracted="True"> + <Columns> + <Column name="GUID" key="true" /> + <Column name="ID" /> + <Column name="LAST_UPDATED" /> + <Column name="CODE" /> + <Column name="NAME" /> + <Column name="DESCRIPTION" /> + <Column name="SUPPORTS_HOMING" /> + </Columns> + </Item> + <Item name="dbo.HARDWARE_MOTORS" type="table"> + <Columns> + <Column name="GUID" key="true" /> + <Column name="ID" /> + <Column name="LAST_UPDATED" /> + <Column name="HARDWARE_MOTOR_TYPE_GUID" /> + <Column name="HARDWARE_VERSION_GUID" /> + <Column name="MIN_FREQUENCY" /> + <Column name="MAX_FREQUENCY" /> + <Column name="SET_MICRO_STEP" /> + <Column name="MICRO_STEP" /> + <Column name="MAX_CHANGE_SLOPE" /> + <Column name="HIGH_LENGTH_MICRO_SECOND" /> + <Column name="SPEED_MASTER" /> + <Column name="PULSE_PER_ROUND" /> + <Column name="PULLEY_RADIUS" /> + <Column name="CONFIG_WORD" /> + <Column name="DIRECTION_THREAD_WIZE" /> + <Column name="KVAL_HOLD" /> + <Column name="KVAL_RUN" /> + <Column name="KVAL_ACC" /> + <Column name="KVAL_DEC" /> + <Column name="OVER_CURRENT_THRESHOLD" /> + <Column name="STALL_THRESHOLD" /> + <Column name="THERMAL_COMPENSATION_FACTOR" /> + <Column name="LOW_SPEED_OPTIMIZATION" /> + <Column name="ST_SLP" /> + <Column name="INT_SPD" /> + <Column name="FN_SLP_ACC" /> + <Column name="FN_SLP_DEC" /> + <Column name="FS_SPD" /> + <Column name="GATE_CFG_1" /> + <Column name="GATE_CFG_2" /> + <Column name="T_VAL_HOLD" /> + <Column name="T_VAL_RUN" /> + <Column name="T_VAL_ACC" /> + <Column name="T_VAL_DEC" /> + <Column name="T_FAST" /> + <Column name="T_ON_MIN" /> + <Column name="T_OFF_MIN" /> + <Column name="ACTIVE" /> + </Columns> + </Item> + <Item name="dbo.HARDWARE_PID_CONTROL_TYPES" type="table" extracted="True"> + <Columns> + <Column name="GUID" key="true" /> + <Column name="ID" /> + <Column name="LAST_UPDATED" /> + <Column name="CODE" /> + <Column name="NAME" /> + <Column name="DESCRIPTION" /> + </Columns> + </Item> + <Item name="dbo.HARDWARE_PID_CONTROLS" type="table"> + <Columns> + <Column name="GUID" key="true" /> + <Column name="ID" /> + <Column name="LAST_UPDATED" /> + <Column name="HARDWARE_PID_CONTROL_TYPE_GUID" /> + <Column name="HARDWARE_VERSION_GUID" /> + <Column name="OUTPUT_PROPORTIONAL_POWER_LIMIT" /> + <Column name="OUTPUT_PROPORTIONAL_BAND" /> + <Column name="INTEGRAL_TIME" /> + <Column name="DERIVATIVE_TIME" /> + <Column name="SENSOR_CORRECTION_ADJUSTMENT" /> + <Column name="SENSOR_MIN_VALUE" /> + <Column name="SENSOR_MAX_VALUE" /> + <Column name="SET_POINT_RAMP_RATEOR_SOFT_START_RAMP" /> + <Column name="SET_POINT_CONTROL_OUTPUT_RATE" /> + <Column name="CONTROL_OUTPUT_TYPE" /> + <Column name="SSR_CONTROL_OUTPUT_TYPE" /> + <Column name="OUTPUT_ON_OFF_HYSTERESIS_VALUE" /> + <Column name="PROCESS_VARIABLE_SAMPLING_RATE" /> + <Column name="PV_INPUT_FILTER_FACTOR_MODE" /> + <Column name="OUTPUT_PROPORTIONAL_CYCLE_TIME" /> + <Column name="AC_HEATERS__HALF_CYCLE_TIME" /> + <Column name="PROPORTIONAL_GAIN" /> + <Column name="PID_ACTIVE" /> + <Column name="EPSILON" /> + <Column name="ACTIVE" /> + </Columns> + </Item> + <Item name="dbo.HARDWARE_SPEED_SENSOR_TYPES" type="table" extracted="True"> + <Columns> + <Column name="GUID" key="true" /> + <Column name="ID" /> + <Column name="LAST_UPDATED" /> + <Column name="CODE" /> + <Column name="NAME" /> + <Column name="DESCRIPTION" /> + </Columns> + </Item> + <Item name="dbo.HARDWARE_SPEED_SENSORS" type="table"> + <Columns> + <Column name="GUID" key="true" /> + <Column name="ID" /> + <Column name="LAST_UPDATED" /> + <Column name="HARDWARE_SPEED_SENSOR_TYPE_GUID" /> + <Column name="HARDWARE_VERSION_GUID" /> + <Column name="RESOLUTION_BITS" /> + <Column name="PERIMETER" /> + <Column name="ACTIVE" /> + </Columns> + </Item> + <Item name="dbo.HARDWARE_VERSIONS" type="table"> + <Columns> + <Column name="GUID" key="true" /> + <Column name="ID" /> + <Column name="LAST_UPDATED" /> + <Column name="VERSION" /> + <Column name="NAME" /> + </Columns> + </Item> + <Item name="dbo.HARDWARE_WINDER_TYPES" type="table" extracted="True"> + <Columns> + <Column name="GUID" key="true" /> + <Column name="ID" /> + <Column name="LAST_UPDATED" /> + <Column name="CODE" /> + <Column name="NAME" /> + <Column name="DESCRIPTION" /> + </Columns> + </Item> + <Item name="dbo.HARDWARE_WINDERS" type="table"> + <Columns> + <Column name="GUID" key="true" /> + <Column name="ID" /> + <Column name="LAST_UPDATED" /> + <Column name="HARDWARE_WINDER_TYPE_GUID" /> + <Column name="HARDWARE_VERSION_GUID" /> + <Column name="MILLIMETER_PER_ROTATION" /> + <Column name="ACTIVE" /> + </Columns> + </Item> + <Item name="dbo.IDS_PACK_FORMULAS" type="table" extracted="True"> + <Columns> + <Column name="GUID" key="true" /> + <Column name="ID" /> + <Column name="LAST_UPDATED" /> + <Column name="CODE" /> + <Column name="NAME" /> + <Column name="DESCRIPTION" /> + <Column name="AUTO_CALCULATED" /> + </Columns> + </Item> + <Item name="dbo.IDS_PACKS" type="table"> + <Columns> + <Column name="GUID" key="true" /> + <Column name="ID" /> + <Column name="LAST_UPDATED" /> + <Column name="CONFIGURATION_GUID" /> + <Column name="DISPENSER_GUID" /> + <Column name="LIQUID_TYPE_GUID" /> + <Column name="CARTRIDGE_TYPE_GUID" /> + <Column name="MID_TANK_TYPE_GUID" /> + <Column name="IDS_PACK_FORMULA_GUID" /> + <Column name="PACK_INDEX" /> + <Column name="IS_EMPTY" /> + </Columns> + </Item> + <Item name="dbo.JOB_RUNS" type="table"> + <Columns> + <Column name="GUID" key="true" /> + <Column name="ID" /> + <Column name="LAST_UPDATED" /> + <Column name="MACHINE_GUID" /> + <Column name="JOB_GUID" /> + <Column name="START_DATE" /> + <Column name="END_DATE" /> + <Column name="STATUS" /> + <Column name="END_POSITION" /> + <Column name="FAILED_MESSAGE" /> + <Column name="IS_SYNCHRONIZED" /> + </Columns> + </Item> + <Item name="dbo.JOBS" type="table"> + <Columns> + <Column name="GUID" key="true" /> + <Column name="ID" /> + <Column name="LAST_UPDATED" /> + <Column name="CREATION_DATE" /> + <Column name="LAST_RUN" /> + <Column name="MACHINE_GUID" /> + <Column name="USER_GUID" /> + <Column name="RML_GUID" /> + <Column name="WINDING_METHOD_GUID" /> + <Column name="SPOOL_TYPE_GUID" /> + <Column name="NAME" /> + <Column name="DESCRIPTION" /> + <Column name="INTER_SEGMENT_LENGTH" /> + <Column name="ENABLE_INTER_SEGMENT" /> + <Column name="ENABLE_LUBRICATION" /> + <Column name="JOB_INDEX" /> + <Column name="ESTIMATED_DURATION_MILI" /> + <Column name="HAS_EMBROIDERY_FILE" /> + <Column name="EMBROIDERY_FILE_DATA" /> + <Column name="EMBROIDERY_FILE_NAME" /> + <Column name="EMBROIDERY_JPEG" /> + <Column name="STATUS" /> + <Column name="COLOR_SPACE_GUID" /> + <Column name="COLOR_CATALOG_GUID" /> + <Column name="NUMBER_OF_UNITS" /> + <Column name="TYPE" /> + <Column name="CUSTOMER_GUID" /> + <Column name="SPOOLS_DISTRIBUTION" /> + <Column name="NUMBER_OF_HEADS" /> + <Column name="SAMPLE_UNITS_OR_METERS" /> + <Column name="FINE_TUNING_STATUS" /> + <Column name="FINE_TUNING_APPROVE_DATE" /> + <Column name="SAMPLE_DYE_STATUS" /> + <Column name="SAMPLE_DYE_APPROVE_DATE" /> + <Column name="EDITING_STATE" /> + <Column name="LENGTH_PERCENTAGE_FACTOR" /> + <Column name="IS_SYNCHRONIZED" /> + <Column name="SOURCE" /> + </Columns> + </Item> + <Item name="dbo.LINEAR_MASS_DENSITY_UNITS" type="table" extracted="True"> + <Columns> + <Column name="GUID" key="true" /> + <Column name="ID" /> + <Column name="LAST_UPDATED" /> + <Column name="NAME" /> + <Column name="CODE" /> + </Columns> + </Item> + <Item name="dbo.LIQUID_TYPES" type="table" extracted="True"> + <Columns> + <Column name="GUID" key="true" /> + <Column name="ID" /> + <Column name="LAST_UPDATED" /> + <Column name="CODE" /> + <Column name="NAME" /> + <Column name="VERSION" /> + <Column name="COLOR" /> + <Column name="PREFERRED_INDEX" /> + <Column name="HAS_PIGMENT" /> + </Columns> + </Item> + <Item name="dbo.LIQUID_TYPES_RMLS" type="table"> + <Columns> + <Column name="GUID" key="true" /> + <Column name="ID" /> + <Column name="LAST_UPDATED" /> + <Column name="LIQUID_TYPE_GUID" /> + <Column name="RML_GUID" /> + <Column name="MAX_NL_PER_CM" /> + <Column name="DEFAULT_CAT_DATA" /> + </Columns> + </Item> + <Item name="dbo.MACHINE_STUDIO_VERSIONS" type="table"> + <Columns> + <Column name="GUID" key="true" /> + <Column name="ID" /> + <Column name="LAST_UPDATED" /> + <Column name="VERSION" /> + <Column name="BLOB_NAME" /> + <Column name="INSTALLER_BLOB_NAME" /> + <Column name="COMMENTS" /> + <Column name="USER_GUID" /> + </Columns> + </Item> + <Item name="dbo.MACHINE_VERSIONS" type="table"> + <Columns> + <Column name="GUID" key="true" /> + <Column name="ID" /> + <Column name="LAST_UPDATED" /> + <Column name="VERSION" /> + <Column name="NAME" /> + <Column name="PROTOTYPE_MACHINE_DATA" /> + </Columns> + </Item> + <Item name="dbo.MACHINES" type="table"> + <Columns> + <Column name="GUID" key="true" /> + <Column name="ID" /> + <Column name="LAST_UPDATED" /> + <Column name="SERIAL_NUMBER" /> + <Column name="NAME" /> + <Column name="PRODUCTION_DATE" /> + <Column name="ORGANIZATION_GUID" /> + <Column name="SITE_GUID" /> + <Column name="MACHINE_VERSION_GUID" /> + <Column name="CONFIGURATION_GUID" /> + <Column name="DEFAULT_RML_GUID" /> + <Column name="LOADED_RML_GUID" /> + <Column name="TARGET_JOB_TYPES" /> + <Column name="TARGET_COLOR_SPACE_CODES" /> + <Column name="DEFAULT_COLOR_SPACE_GUID" /> + <Column name="DEFAULT_SEGMENT_LENGTH" /> + <Column name="DEFAULT_SPOOL_TYPE_GUID" /> + <Column name="OS_KEY" /> + <Column name="AUTO_LOGIN" /> + <Column name="AUTO_CHECK_FOR_UPDATES" /> + <Column name="SETUP_ACTIVATION" /> + <Column name="SETUP_REMOTE_ASSISTANCE" /> + <Column name="SETUP_UWF" /> + <Column name="SETUP_FIRMWARE" /> + <Column name="SETUP_FPGA" /> + <Column name="IS_DEMO" /> + <Column name="SUSPEND_VERSION_UPDATE" /> + <Column name="FORCE_VERSION_UPDATE" /> + <Column name="PERFORM_SCHEMA_UPDATE_ON_DATA_UPDATE" /> + <Column name="DEVICE_COM_PORT" /> + <Column name="IS_DEVICE_REGISTERED" /> + <Column name="DEVICE_ID" /> + <Column name="DEVICE_NAME" /> + </Columns> + </Item> + <Item name="dbo.MACHINES_EVENTS" type="table"> + <Columns> + <Column name="GUID" key="true" /> + <Column name="ID" /> + <Column name="LAST_UPDATED" /> + <Column name="HOST_NAME" /> + <Column name="MACHINE_GUID" /> + <Column name="EVENT_TYPE_GUID" /> + <Column name="USER_GUID" /> + <Column name="DATE_TIME" /> + <Column name="DESCRIPTION" /> + <Column name="IS_SYNCHRONIZED" /> + </Columns> + </Item> + <Item name="dbo.MEDIA_CONDITIONS" type="table" extracted="True"> + <Columns> + <Column name="GUID" key="true" /> + <Column name="ID" /> + <Column name="LAST_UPDATED" /> + <Column name="NAME" /> + <Column name="CODE" /> + </Columns> + </Item> + <Item name="dbo.MEDIA_MATERIALS" type="table" extracted="True"> + <Columns> + <Column name="GUID" key="true" /> + <Column name="ID" /> + <Column name="LAST_UPDATED" /> + <Column name="NAME" /> + <Column name="CODE" /> + </Columns> + </Item> + <Item name="dbo.MEDIA_PURPOSES" type="table" extracted="True"> + <Columns> + <Column name="GUID" key="true" /> + <Column name="ID" /> + <Column name="LAST_UPDATED" /> + <Column name="NAME" /> + <Column name="CODE" /> + </Columns> + </Item> + <Item name="dbo.MID_TANK_TYPES" type="table" extracted="True"> + <Columns> + <Column name="GUID" key="true" /> + <Column name="ID" /> + <Column name="LAST_UPDATED" /> + <Column name="CODE" /> + <Column name="NAME" /> + <Column name="LITER_CAPACITY" /> + </Columns> + </Item> + <Item name="dbo.ORGANIZATIONS" type="table"> + <Columns> + <Column name="GUID" key="true" /> + <Column name="ID" /> + <Column name="LAST_UPDATED" /> + <Column name="NAME" /> + <Column name="CONTACT_GUID" /> + <Column name="ADDRESS_GUID" /> + </Columns> + </Item> + <Item name="dbo.PERMISSIONS" type="table" extracted="True"> + <Columns> + <Column name="GUID" key="true" /> + <Column name="ID" /> + <Column name="LAST_UPDATED" /> + <Column name="CODE" /> + <Column name="NAME" /> + <Column name="DESCRIPTION" /> + </Columns> + </Item> + <Item name="dbo.PROCESS_PARAMETERS_TABLES" type="table"> + <Columns> + <Column name="GUID" key="true" /> + <Column name="ID" /> + <Column name="LAST_UPDATED" /> + <Column name="NAME" /> + <Column name="DYEING_SPEED" /> + <Column name="MIN_INK_UPTAKE" /> + <Column name="MAX_INK_UPTAKE" /> + <Column name="FEEDER_TENSION" /> + <Column name="PULLER_TENSION" /> + <Column name="WINDER_TENSION" /> + <Column name="MIXER_TEMP" /> + <Column name="HEAD_ZONE1_TEMP" /> + <Column name="HEAD_ZONE2_TEMP" /> + <Column name="HEAD_ZONE3_TEMP" /> + <Column name="HEAD_ZONE4_TEMP" /> + <Column name="HEAD_ZONE5_TEMP" /> + <Column name="HEAD_ZONE6_TEMP" /> + <Column name="DRYER_AIR_FLOW" /> + <Column name="DRYER_ZONE1_TEMP" /> + <Column name="DRYER_ZONE2_TEMP" /> + <Column name="DRYER_ZONE3_TEMP" /> + <Column name="DRYER_BUFFER_LENGTH" /> + <Column name="HEAD_AIR_FLOW" /> + <Column name="PROCESS_PARAMETERS_TABLES_GROUP_GUID" /> + <Column name="TABLE_INDEX" /> + </Columns> + </Item> + <Item name="dbo.PROCESS_PARAMETERS_TABLES_GROUPS" type="table"> + <Columns> + <Column name="GUID" key="true" /> + <Column name="ID" /> + <Column name="LAST_UPDATED" /> + <Column name="RML_GUID" /> + <Column name="NAME" /> + <Column name="ACTIVE" /> + <Column name="SAVE_DATE" /> + </Columns> + </Item> + <Item name="dbo.RMLS" type="table"> + <Columns> + <Column name="GUID" key="true" /> + <Column name="ID" /> + <Column name="LAST_UPDATED" /> + <Column name="NAME" /> + <Column name="MANUFACTURER" /> + <Column name="CODE" /> + <Column name="WHITE_POINT_L" /> + <Column name="WHITE_POINT_A" /> + <Column name="WHITE_POINT_B" /> + <Column name="MEDIA_MATERIAL_GUID" /> + <Column name="MEDIA_PURPOSE_GUID" /> + <Column name="MEDIA_CONDITION_GUID" /> + <Column name="LINEAR_MASS_DENSITY_UNIT_GUID" /> + <Column name="FIBER_SHAPE_GUID" /> + <Column name="FIBER_SYNTH_GUID" /> + <Column name="FIBER_SIZE" /> + <Column name="NUMBER_OF_FIBERS" /> + <Column name="PLIES_PER_FIBER" /> + <Column name="PLIES_PER_THREAD" /> + <Column name="TWISTED" /> + <Column name="AIR_ENTANGLEMENT" /> + <Column name="LUBRICANT" /> + <Column name="TENSILE_STRENGTH" /> + <Column name="ELONGATION_AT_BREAK_PERCENTAGE" /> + <Column name="ESTIMATED_THREAD_DIAMETER" /> + <Column name="RANK" /> + <Column name="THUMBNAIL" /> + <Column name="CCT_GUID" /> + <Column name="COLOR_CONVERSION_VERSION" /> + </Columns> + </Item> + <Item name="dbo.ROLES" type="table" extracted="True"> + <Columns> + <Column name="GUID" key="true" /> + <Column name="ID" /> + <Column name="LAST_UPDATED" /> + <Column name="CODE" /> + <Column name="NAME" /> + <Column name="DESCRIPTION" /> + </Columns> + </Item> + <Item name="dbo.ROLES_PERMISSIONS" type="table" extracted="True"> + <Columns> + <Column name="GUID" key="true" /> + <Column name="ID" /> + <Column name="LAST_UPDATED" /> + <Column name="ROLE_GUID" /> + <Column name="PERMISSION_GUID" /> + </Columns> + </Item> + <Item name="dbo.SEGMENTS" type="table"> + <Columns> + <Column name="GUID" key="true" /> + <Column name="ID" /> + <Column name="LAST_UPDATED" /> + <Column name="NAME" /> + <Column name="JOB_GUID" /> + <Column name="LENGTH" /> + <Column name="SEGMENT_INDEX" /> + </Columns> + </Item> + <Item name="dbo.SITES" type="table"> + <Columns> + <Column name="GUID" key="true" /> + <Column name="ID" /> + <Column name="LAST_UPDATED" /> + <Column name="ORGANIZATION_GUID" /> + <Column name="NAME" /> + <Column name="DESCRIPTION" /> + </Columns> + </Item> + <Item name="dbo.SITES_CATALOGS" type="table"> + <Columns> + <Column name="GUID" key="true" /> + <Column name="ID" /> + <Column name="LAST_UPDATED" /> + <Column name="SITE_GUID" /> + <Column name="COLOR_CATALOG_GUID" /> + </Columns> + </Item> + <Item name="dbo.SITES_RMLS" type="table"> + <Columns> + <Column name="GUID" key="true" /> + <Column name="ID" /> + <Column name="LAST_UPDATED" /> + <Column name="SITE_GUID" /> + <Column name="RML_GUID" /> + </Columns> + </Item> + <Item name="dbo.SPOOL_TYPES" type="table" extracted="True"> + <Columns> + <Column name="GUID" key="true" /> + <Column name="ID" /> + <Column name="LAST_UPDATED" /> + <Column name="CODE" /> + <Column name="NAME" /> + <Column name="LENGTH" /> + <Column name="WEIGHT" /> + <Column name="DIAMETER" /> + <Column name="ROTATIONS_PER_PASSAGE" /> + </Columns> + </Item> + <Item name="dbo.SPOOLS" type="table"> + <Columns> + <Column name="GUID" key="true" /> + <Column name="ID" /> + <Column name="LAST_UPDATED" /> + <Column name="SPOOL_TYPE_GUID" /> + <Column name="MACHINE_GUID" /> + <Column name="START_OFFSET_PULSES" /> + <Column name="BACKING_RATE" /> + <Column name="SEGMENT_OFFSET_PULSES" /> + <Column name="BOTTOM_BACKING_RATE" /> + </Columns> + </Item> + <Item name="dbo.SYNC_CONFIGURATIONS" type="table"> + <Columns> + <Column name="ID" key="true" /> + <Column name="TABLE_NAME" /> + <Column name="SYNC_TYPE" /> + </Columns> + </Item> + <Item name="dbo.TANGO_UPDATES" type="table"> + <Columns> + <Column name="GUID" key="true" /> + <Column name="ID" /> + <Column name="LAST_UPDATED" /> + <Column name="APPLICATION_VERSION" /> + <Column name="FIRMWARE_VERSION" /> + <Column name="MACHINE_GUID" /> + <Column name="STATUS" /> + <Column name="FAILED_REASON" /> + <Column name="FAILED_LOG" /> + <Column name="START_DATE" /> + <Column name="END_DATE" /> + <Column name="IS_SYNCHRONIZED" /> + </Columns> + </Item> + <Item name="dbo.TANGO_VERSIONS" type="table"> + <Columns> + <Column name="GUID" key="true" /> + <Column name="ID" /> + <Column name="LAST_UPDATED" /> + <Column name="VERSION" /> + <Column name="FIRMWARE_VERSION" /> + <Column name="BLOB_NAME" /> + <Column name="INSTALLER_BLOB_NAME" /> + <Column name="COMMENTS" /> + <Column name="USER_GUID" /> + <Column name="MACHINE_VERSION_GUID" /> + </Columns> + </Item> + <Item name="dbo.TECH_CONTROLLERS" type="table" extracted="True"> + <Columns> + <Column name="GUID" key="true" /> + <Column name="ID" /> + <Column name="LAST_UPDATED" /> + <Column name="CODE" /> + <Column name="NAME" /> + <Column name="DESCRIPTION" /> + <Column name="MIN" /> + <Column name="MAX" /> + <Column name="UNITS" /> + </Columns> + </Item> + <Item name="dbo.TECH_DISPENSERS" type="table" extracted="True"> + <Columns> + <Column name="GUID" key="true" /> + <Column name="ID" /> + <Column name="LAST_UPDATED" /> + <Column name="CODE" /> + <Column name="NAME" /> + <Column name="DESCRIPTION" /> + </Columns> + </Item> + <Item name="dbo.TECH_HEATERS" type="table" extracted="True"> + <Columns> + <Column name="GUID" key="true" /> + <Column name="ID" /> + <Column name="LAST_UPDATED" /> + <Column name="CODE" /> + <Column name="NAME" /> + <Column name="DESCRIPTION" /> + </Columns> + </Item> + <Item name="dbo.TECH_IOS" type="table" extracted="True"> + <Columns> + <Column name="GUID" key="true" /> + <Column name="ID" /> + <Column name="LAST_UPDATED" /> + <Column name="CODE" /> + <Column name="NAME" /> + <Column name="TYPE" /> + <Column name="DESIGNATOR" /> + <Column name="ASM" /> + <Column name="INTERFACE_NAME" /> + <Column name="SENSOR" /> + <Column name="INIT_VALUE" /> + <Column name="AVERAGING" /> + <Column name="MIN" /> + <Column name="MAX" /> + </Columns> + </Item> + <Item name="dbo.TECH_MONITORS" type="table" extracted="True"> + <Columns> + <Column name="GUID" key="true" /> + <Column name="ID" /> + <Column name="LAST_UPDATED" /> + <Column name="CODE" /> + <Column name="NAME" /> + <Column name="DESCRIPTION" /> + <Column name="MIN" /> + <Column name="MAX" /> + <Column name="UNITS" /> + <Column name="POINTS_PER_FRAME" /> + <Column name="MULTI_CHANNEL" /> + <Column name="CHANNEL_COUNT" /> + </Columns> + </Item> + <Item name="dbo.TECH_VALVES" type="table" extracted="True"> + <Columns> + <Column name="GUID" key="true" /> + <Column name="ID" /> + <Column name="LAST_UPDATED" /> + <Column name="CODE" /> + <Column name="NAME" /> + <Column name="DESCRIPTION" /> + <Column name="TYPE" /> + <Column name="STATE1" /> + <Column name="STATE2" /> + </Columns> + </Item> + <Item name="dbo.USERS" type="table"> + <Columns> + <Column name="GUID" key="true" /> + <Column name="ID" /> + <Column name="LAST_UPDATED" /> + <Column name="DELETED" /> + <Column name="EMAIL" /> + <Column name="PASSWORD" /> + <Column name="ORGANIZATION_GUID" /> + <Column name="CONTACT_GUID" /> + <Column name="ADDRESS_GUID" /> + <Column name="LAST_LOGIN" /> + </Columns> + </Item> + <Item name="dbo.USERS_ROLES" type="table"> + <Columns> + <Column name="GUID" key="true" /> + <Column name="ID" /> + <Column name="LAST_UPDATED" /> + <Column name="USER_GUID" /> + <Column name="ROLE_GUID" /> + </Columns> + </Item> + <Item name="dbo.WINDING_METHODS" type="table" extracted="True"> + <Columns> + <Column name="GUID" key="true" /> + <Column name="ID" /> + <Column name="LAST_UPDATED" /> + <Column name="CODE" /> + <Column name="NAME" /> + <Column name="DESCRIPTION" /> + </Columns> + </Item> + </Items> + <ProjectSettings> + <AllSettings> + <ComparisonCaseSensitive>1</ComparisonCaseSensitive> + <CompareTrimmedStrings>False</CompareTrimmedStrings> + <EmptyEqualsNull>False</EmptyEqualsNull> + <PrecedeStringConstWithNPrefix>0</PrecedeStringConstWithNPrefix> + <AutoSelectKeyColumns>0</AutoSelectKeyColumns> + <PerformanceOptions> + <PerformanceOption name="Auto" value="True" /> + </PerformanceOptions> + </AllSettings> + </ProjectSettings> +</SqlDataExaminer>
\ No newline at end of file diff --git a/Software/DB/SQLExaminer Projects/GENERAL_ENV_UPGRADE.seproj b/Software/DB/SQLExaminer Projects/GENERAL_ENV_UPGRADE.seproj new file mode 100644 index 000000000..797c4ade0 --- /dev/null +++ b/Software/DB/SQLExaminer Projects/GENERAL_ENV_UPGRADE.seproj @@ -0,0 +1,72 @@ +<Project version="21"> + <Sources> + <Source id="1"> + <EngineType>MsSqlAzure</EngineType> + <StorageType>LiveDb</StorageType> + <ServerName>twine.database.windows.net</ServerName> + <Database>Tango_DEV</Database> + <WinAuth>False</WinAuth> + <AzureAuthMode>SqlServer</AzureAuthMode> + <Login>Roy</Login> + <Password>Aa123456</Password> + <SavePasswords>true</SavePasswords> + </Source> + <Source id="2"> + <EngineType>MsSqlAzure</EngineType> + <StorageType>LiveDb</StorageType> + <ServerName>twine.database.windows.net</ServerName> + <Database>Tango_TEST</Database> + <WinAuth>False</WinAuth> + <AzureAuthMode>SqlServer</AzureAuthMode> + <Login>Roy</Login> + <Password>Aa123456</Password> + <SavePasswords>true</SavePasswords> + </Source> + </Sources> + <DataTypesMappings> + <DataTypesMapping name="Default" default="True" /> + </DataTypesMappings> + <ObjectFilter mode="All" /> + <ProjectOptions> + <IgnoreIndices>false</IgnoreIndices> + <IgnoreIndexDetails>false</IgnoreIndexDetails> + <IgnorePrimaryKeys>false</IgnorePrimaryKeys> + <IgnoreUniqueConstraints>false</IgnoreUniqueConstraints> + <IgnoreForeignKeys>false</IgnoreForeignKeys> + <IgnoreFKAction>false</IgnoreFKAction> + <IgnoreChecks>false</IgnoreChecks> + <IgnoreFullText>false</IgnoreFullText> + <IgnoreWithNocheck>true</IgnoreWithNocheck> + <IgnoreNotForReplication>false</IgnoreNotForReplication> + <IgnoreFileGroup>false</IgnoreFileGroup> + <IgnoreIdentity>false</IgnoreIdentity> + <IgnoreComments>true</IgnoreComments> + <IgnoreCaseSensitivity>true</IgnoreCaseSensitivity> + <IgnoreSpaces>true</IgnoreSpaces> + <IgnoreSemicolons>true</IgnoreSemicolons> + <IgnoreOwners>false</IgnoreOwners> + <IncludeSchemaInScript>true</IncludeSchemaInScript> + <IgnoreTriggers>false</IgnoreTriggers> + <IgnoreCollations>false</IgnoreCollations> + <IgnoreExtProperties>false</IgnoreExtProperties> + <IgnorePermissions>false</IgnorePermissions> + <IgnoreIndexNames>true</IgnoreIndexNames> + <IgnoreNullable>false</IgnoreNullable> + <IgnoreColumnsTypes>false</IgnoreColumnsTypes> + <IgnoreDefaults>false</IgnoreDefaults> + <IgnoreAnsiNulls>false</IgnoreAnsiNulls> + <IgnoreQuotedID>false</IgnoreQuotedID> + <IgnorePhysicalProperties>false</IgnorePhysicalProperties> + <DecryptTextObjects>false</DecryptTextObjects> + <SaveOrderOption>true</SaveOrderOption> + <UserTypesToBase>false</UserTypesToBase> + <CaseSense>false</CaseSense> + <IgnoreCaseObjectNames>true</IgnoreCaseObjectNames> + </ProjectOptions> + <SchemaMapping> + <SMItem schema1="guest" schema2="guest" /> + <SMItem schema1="dbo" schema2="dbo" /> + <SMItem schema1="sys" schema2="sys" /> + <SMItem schema1="INFORMATION_SCHEMA" schema2="INFORMATION_SCHEMA" /> + </SchemaMapping> +</Project>
\ No newline at end of file diff --git a/Software/Visual_Studio/Azure/Tango.AzureUtils.UI/App.config b/Software/Visual_Studio/Azure/Tango.AzureUtils.UI/App.config index eb51eb63b..2b12e43f8 100644 --- a/Software/Visual_Studio/Azure/Tango.AzureUtils.UI/App.config +++ b/Software/Visual_Studio/Azure/Tango.AzureUtils.UI/App.config @@ -9,6 +9,10 @@ <assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral" /> <bindingRedirect oldVersion="0.0.0.0-10.0.0.0" newVersion="10.0.0.0" /> </dependentAssembly> + <dependentAssembly> + <assemblyIdentity name="Microsoft.IdentityModel.Clients.ActiveDirectory" publicKeyToken="31bf3856ad364e35" culture="neutral" /> + <bindingRedirect oldVersion="0.0.0.0-4.3.0.0" newVersion="4.3.0.0" /> + </dependentAssembly> </assemblyBinding> </runtime> </configuration>
\ No newline at end of file diff --git a/Software/Visual_Studio/Azure/Tango.AzureUtils.UI/MainWindow.xaml.cs b/Software/Visual_Studio/Azure/Tango.AzureUtils.UI/MainWindow.xaml.cs index c7d1728bd..2ba632f76 100644 --- a/Software/Visual_Studio/Azure/Tango.AzureUtils.UI/MainWindow.xaml.cs +++ b/Software/Visual_Studio/Azure/Tango.AzureUtils.UI/MainWindow.xaml.cs @@ -20,9 +20,38 @@ namespace Tango.AzureUtils.UI /// </summary> public partial class MainWindow : Window { + private static string app_id = "be33437c-5052-449f-ab9d-a88d008eae24"; + private static string client_secret = "bf67fb6f-4d06-4893-988c-6b347aff23d6"; + private static string tenant_id = "2ebd63a5-bc2f-41dc-9066-4409ed5e5dd4"; + private static string subscription_id = "10c8aa60-3b15-4e0d-b412-6aeef90e5e91"; + + Tango.AzureUtils.Deployment.DeploymentManager manager = new Deployment.DeploymentManager(new AzureUtilsCredentials() + { + ClientID = app_id, + ClientSecret = client_secret, + TenantID = tenant_id, + SubscriptionID = subscription_id + }); + public MainWindow() { InitializeComponent(); + + Test(); + } + + private async void Test() + { + var apps = await manager.GetAllWebAppsAsync(); + + var machineService = apps.SingleOrDefault(x => x.Name == "MachineService"); + + var devSlot = await machineService.DeploymentSlots.GetByNameAsync("MachineService-DEV"); + var testSlot = await machineService.DeploymentSlots.GetByNameAsync("MachineService-TEST"); + + await manager.OpenSQLExaminerData(devSlot, testSlot); + + var a = 5; } } } diff --git a/Software/Visual_Studio/Azure/Tango.AzureUtils.UI/Tango.AzureUtils.UI.csproj b/Software/Visual_Studio/Azure/Tango.AzureUtils.UI/Tango.AzureUtils.UI.csproj index 08d69d41d..c2b723760 100644 --- a/Software/Visual_Studio/Azure/Tango.AzureUtils.UI/Tango.AzureUtils.UI.csproj +++ b/Software/Visual_Studio/Azure/Tango.AzureUtils.UI/Tango.AzureUtils.UI.csproj @@ -227,6 +227,10 @@ <None Include="App.config" /> </ItemGroup> <ItemGroup> + <ProjectReference Include="..\..\Tango.Core\Tango.Core.csproj"> + <Project>{a34ee0f0-649d-41c8-8489-b6f1cc6924ee}</Project> + <Name>Tango.Core</Name> + </ProjectReference> <ProjectReference Include="..\Tango.AzureUtils\Tango.AzureUtils.csproj"> <Project>{4a6b97e5-5eba-4702-a016-6f4004f14b08}</Project> <Name>Tango.AzureUtils</Name> diff --git a/Software/Visual_Studio/Azure/Tango.AzureUtils/Deployment/DeploymentManager.cs b/Software/Visual_Studio/Azure/Tango.AzureUtils/Deployment/DeploymentManager.cs index e9ae6e97b..8a3b6ad7b 100644 --- a/Software/Visual_Studio/Azure/Tango.AzureUtils/Deployment/DeploymentManager.cs +++ b/Software/Visual_Studio/Azure/Tango.AzureUtils/Deployment/DeploymentManager.cs @@ -1,4 +1,5 @@ -using Microsoft.Azure.Management.AppService.Fluent; +using FluentFTP; +using Microsoft.Azure.Management.AppService.Fluent; using Microsoft.Azure.Management.Fluent; using Microsoft.Azure.Management.ResourceManager.Fluent; using Microsoft.Azure.Management.ResourceManager.Fluent.Authentication; @@ -6,27 +7,70 @@ using Microsoft.Azure.Storage; using Microsoft.Azure.Storage.Blob; using System; using System.Collections.Generic; +using System.ComponentModel.DataAnnotations; +using System.Data.Entity; +using System.Diagnostics; using System.IO; using System.Linq; using System.Text; using System.Threading.Tasks; +using System.Xml; +using System.Xml.Linq; +using Tango.BL; +using Tango.BL.Entities; +using Tango.Core; +using Tango.Core.Helpers; namespace Tango.AzureUtils.Deployment { - public class DeploymentManager + public class DeploymentManager : ExtendedObject { private AzureUtilsCredentials _credentials; private IAzure _azure; + private IProgress<FtpProgress> _ftpDownloadProgress; + private IProgress<FtpProgress> _ftpUploadProgress; + + //TODO: Embedded TFP injection to current package! + + #region Events + + public event EventHandler<DeploymentProgressEventArgs> DeploymentProgress; + + #endregion + + #region Properties + + private UpgradeConfiguration _upgradeConfiguration; + public UpgradeConfiguration UpgradeConfiguration + { + get { return _upgradeConfiguration; } + set { _upgradeConfiguration = value; RaisePropertyChangedAuto(); } + } + + #endregion + + #region Constructors public DeploymentManager(AzureUtilsCredentials credentials) { + UpgradeConfiguration = new UpgradeConfiguration(); + _credentials = credentials; + + _ftpDownloadProgress = new Progress<FtpProgress>((p) => + { + OnProgress(DeploymentStage.DownloadingFTP, $"Downloading {p.RemotePath}...", p.Progress, 100, false); + }); + + _ftpUploadProgress = new Progress<FtpProgress>((p) => + { + OnProgress(DeploymentStage.UploadingFTP, $"Uploading {p.LocalPath}...", p.Progress, 100, false); + }); } - private static string app_id = "be33437c-5052-449f-ab9d-a88d008eae24"; - private static string client_secret = "bf67fb6f-4d06-4893-988c-6b347aff23d6"; - private static string tenant_id = "2ebd63a5-bc2f-41dc-9066-4409ed5e5dd4"; - private static string subscription_id = "10c8aa60-3b15-4e0d-b412-6aeef90e5e91"; + #endregion + + #region Authenticate private IAzure GetOrCreateAzure() { @@ -44,56 +88,430 @@ namespace Tango.AzureUtils.Deployment return _azure; } - public List<IWebApp> GetAllWebApps() + #endregion + + #region Helpers + + public async Task<List<IWebApp>> GetAllWebAppsAsync() + { + return (await GetOrCreateAzure().WebApps.ListAsync()).ToList(); + } + + #endregion + + #region Init + + public void Init() + { + GetOrCreateAzure(); + } + + #endregion + + #region Full Upgrade + + public async Task PerformFullUpgrade(IWebAppBase sourceApp, IWebAppBase targetApp) + { + await ValidateUpgrade(sourceApp, targetApp); + + await UpgradeStorage(sourceApp, targetApp); + await UpgradeVersions(sourceApp, targetApp); + + if (UpgradeConfiguration.UpgradeMachineService) + { + await UpgradeMachineService(sourceApp, targetApp); + } + } + + #endregion + + #region SQLExaminer + + public async Task OpenSQLExaminerSchema(IWebAppBase sourceApp, IWebAppBase targetApp) + { + String projectFile = Path.Combine(AssemblyHelper.GetCurrentAssemblyFolder(), "Deployment", "GENERAL_ENV_UPGRADE.seproj"); + + using (Stream stream = GetFileStream(projectFile)) + { + XElement projectXml = XElement.Load(stream); + var sourceSettings = await sourceApp.GetMachineServiceSettingsAsync(); + var targetSettings = await targetApp.GetMachineServiceSettingsAsync(); + ApplyDatabaseSettingsToProjectXml(projectXml, sourceSettings, targetSettings); + + var tempFile = TemporaryManager.CreateImaginaryFile(".seproj"); + tempFile.Persist = true; + + File.WriteAllText(tempFile, projectXml.ToString()); + + Process.Start(tempFile); + } + } + + public async Task OpenSQLExaminerData(IWebAppBase sourceApp, IWebAppBase targetApp) + { + String projectFile = Path.Combine(AssemblyHelper.GetCurrentAssemblyFolder(), "Deployment", "GENERAL_ENV_UPGRADE.sdeproj"); + + using (Stream stream = GetFileStream(projectFile)) + { + XElement projectXml = XElement.Load(stream); + var sourceSettings = await sourceApp.GetMachineServiceSettingsAsync(); + var targetSettings = await targetApp.GetMachineServiceSettingsAsync(); + ApplyDatabaseSettingsToProjectXml(projectXml, sourceSettings, targetSettings); + + var tempFile = TemporaryManager.CreateImaginaryFile(".sdeproj"); + tempFile.Persist = true; + + File.WriteAllText(tempFile, projectXml.ToString()); + + Process.Start(tempFile); + } + } + + private Stream GetFileStream(String projectFile) + { + byte[] projectBytes = File.ReadAllBytes(projectFile); + MemoryStream stream = new MemoryStream(projectBytes); + return stream; + } + + private void ApplyDatabaseSettingsToProjectXml(XElement projectXml, MachineServiceSettings sourceSettings, MachineServiceSettings targetSettings) + { + var sourceElement = projectXml.Elements().SelectMany(x => x.Descendants()).SingleOrDefault(x => x.Name == "Source" && x.Attributes().SingleOrDefault(y => y.Name == "id").Value == "1"); + var targetElement = projectXml.Elements().SelectMany(x => x.Descendants()).SingleOrDefault(x => x.Name == "Source" && x.Attributes().SingleOrDefault(y => y.Name == "id").Value == "2"); + + ApplyDatabaseSettingsToSourceElement(sourceElement, sourceSettings); + ApplyDatabaseSettingsToSourceElement(targetElement, targetSettings); + } + + private void ApplyDatabaseSettingsToSourceElement(XElement sourceElement, MachineServiceSettings settings) + { + sourceElement.Element("ServerName").SetValue(settings.DB_ADDRESS); + sourceElement.Element("Database").SetValue(settings.DB_CATALOG); + sourceElement.Element("Login").SetValue(settings.DB_USER_NAME); + sourceElement.Element("Password").SetValue(settings.DB_PASSWORD); + } + + #endregion + + #region FTP + + private async Task<List<FtpResult>> DownloadWebAppFiles(IWebAppBase app, String targetFolder) + { + var profile = await app.GetPublishingProfileAsync(); + + using (var ftp = new FtpClient(profile.FtpUrl, profile.FtpUsername, profile.FtpPassword)) + { + var downloadResults = await ftp.DownloadDirectoryAsync(targetFolder, "/site/wwwroot", progress: _ftpDownloadProgress); + + foreach (var downloadResult in downloadResults) + { + if (downloadResult.IsFailed) + { + throw downloadResult.Exception; + } + } + + return downloadResults; + } + } + + private async Task<List<FtpResult>> UploadWebAppFiles(IWebAppBase app, String sourceFolder) + { + var profile = await app.GetPublishingProfileAsync(); + + using (var ftp = new FtpClient(profile.FtpUrl, profile.FtpUsername, profile.FtpPassword)) + { + var uploadResults = await ftp.UploadDirectoryAsync(sourceFolder, "/site/wwwroot", existsMode: FtpRemoteExists.Overwrite, progress: _ftpUploadProgress); + + foreach (var uploadResult in uploadResults) + { + if (uploadResult.IsFailed) + { + throw uploadResult.Exception; + } + } + + return uploadResults; + } + } + + #endregion + + #region Machine Service + + public async Task UpgradeMachineService(IWebAppBase sourceApp, IWebAppBase targetApp) + { + var webAppFilesTempFolder = TemporaryManager.CreateFolder(); + var downloadResults = await DownloadWebAppFiles(sourceApp, webAppFilesTempFolder); + var uploadResults = await UploadWebAppFiles(targetApp, webAppFilesTempFolder + "\\wwwroot"); + } + + #endregion + + #region Applications Versions & Storage Blobs + + public async Task<MachineStudioVersion> GetLatestMachineStudioVersion(IWebAppBase app) + { + MachineServiceSettings settings = null; + + try + { + settings = await app.GetMachineServiceSettingsAsync(); + } + catch (Exception ex) + { + throw new ArgumentException("Could not fetch machine service settings. Please check that all settings are available."); + } + + try + { + DataSource dataSource = settings.ToDataSource(); + + using (var db = ObservablesContext.CreateDefault(dataSource)) + { + var versions = await db.MachineStudioVersions.ToListAsync(); + var latest_machine_version = versions.OrderByDescending(x => Version.Parse(x.Version)).FirstOrDefault(); + return latest_machine_version; + } + } + catch (Exception ex) + { + throw new InvalidDataException("Could not retrieve latest Machine Studio version from database.", ex); + } + } + + public async Task<TangoVersion> GetLatestPPCVersion(IWebAppBase app) { - return GetOrCreateAzure().WebApps.List().ToList(); + MachineServiceSettings settings = null; + + try + { + settings = await app.GetMachineServiceSettingsAsync(); + } + catch (Exception ex) + { + throw new ArgumentException("Could not fetch machine service settings. Please check that all settings are available.", ex); + } + + try + { + DataSource dataSource = settings.ToDataSource(); + + using (var db = ObservablesContext.CreateDefault(dataSource)) + { + var versions = await db.TangoVersions.ToListAsync(); + var latest_machine_version = versions.OrderByDescending(x => Version.Parse(x.Version)).FirstOrDefault(); + return latest_machine_version; + } + } + catch (Exception ex) + { + throw new InvalidDataException("Could not retrieve latest PPC version from database.", ex); + } } - public void UpdateSlot(IDeploymentSlot slot) + public async Task UpgradeStorage(IWebAppBase sourceApp, IWebAppBase targetApp) { - + await ValidateUpgrade(sourceApp, targetApp); + + var latestMachineStudioVersion = await GetLatestMachineStudioVersion(sourceApp); + var latestPPCVersion = await GetLatestPPCVersion(sourceApp); + + var sourceSettings = await sourceApp.GetMachineServiceSettingsAsync(); + var targetSettings = await targetApp.GetMachineServiceSettingsAsync(); + + var sourceAccount = CloudStorageAccount.Parse(sourceSettings.STORAGE_ACCOUNT); + var sourceClient = sourceAccount.CreateCloudBlobClient(); + + var targetAccount = CloudStorageAccount.Parse(targetSettings.STORAGE_ACCOUNT); + var targetClient = targetAccount.CreateCloudBlobClient(); + + var sourceMachineStudioContainer = sourceClient.GetContainerReference(sourceSettings.MACHINE_STUDIO_VERSIONS_CONTAINER); + var targetMachineStudioContainer = targetClient.GetContainerReference(targetSettings.MACHINE_STUDIO_VERSIONS_CONTAINER); + + var sourcePPCContainer = sourceClient.GetContainerReference(sourceSettings.TANGO_VERSIONS_CONTAINER); + var targetPPCContainer = targetClient.GetContainerReference(targetSettings.TANGO_VERSIONS_CONTAINER); + + var sourceMachineStudioBlob = sourceMachineStudioContainer.GetBlockBlobReference(latestMachineStudioVersion.BlobName); + var sourceMachineStudioInstallerBlob = sourceMachineStudioContainer.GetBlockBlobReference(latestMachineStudioVersion.InstallerBlobName); + + var targetMachineStudioBlob = CreateEmptyBlob(targetMachineStudioContainer, sourceMachineStudioBlob.Name); + var targetMachineStudioInstallerBlob = CreateEmptyBlob(targetMachineStudioContainer, sourceMachineStudioInstallerBlob.Name); + + await Task.Factory.StartNew(() => + { + targetMachineStudioBlob.StartCopy(sourceMachineStudioBlob); + targetMachineStudioInstallerBlob.StartCopy(sourceMachineStudioInstallerBlob); + }); } - public void Deploy() + public async Task UpgradeVersions(IWebAppBase sourceApp, IWebAppBase targetApp) { - var credentials = SdkContext.AzureCredentialsFactory.FromServicePrincipal( - app_id, - client_secret, - tenant_id, - AzureEnvironment.AzureGlobalCloud); + await ValidateUpgrade(sourceApp, targetApp); + + if (UpgradeConfiguration.UpgradeMachineStudio) + { + await UpgradeMachineStudioVersion(sourceApp, targetApp); + } - var azure = Azure.Authenticate(credentials).WithSubscription(subscription_id); - var webApps = azure.WebApps.List(); + if (UpgradeConfiguration.UpgradePPC) + { + await UpgradePPCVersion(sourceApp, targetApp); + } + } - var machineService = webApps.SingleOrDefault(x => x.Name == "MachineService"); - var devSlot = machineService.DeploymentSlots.GetByName("MachineService-DEV"); - var devProfile = devSlot.GetPublishingProfile(); + private async Task UpgradeMachineStudioVersion(IWebAppBase sourceApp, IWebAppBase targetApp) + { + var latestMachineStudioVersion = await GetLatestMachineStudioVersion(sourceApp); - String ftpAddress = devProfile.FtpUrl; - String ftpUser = devProfile.FtpUsername; - String ftpPassword = devProfile.FtpPassword; + var targetDataSource = (await targetApp.GetMachineServiceSettingsAsync()).ToDataSource(); - foreach (var ds in machineService.DeploymentSlots.List()) + using (var db = ObservablesContext.CreateDefault(targetDataSource)) { - Console.WriteLine(ds.Name); + db.MachineStudioVersions.Add(latestMachineStudioVersion); + await db.SaveChangesAsync(); } + } - CloudStorageAccount sourceAccount = CloudStorageAccount.Parse("DefaultEndpointsProtocol=https;AccountName=tangostorage;AccountKey=S4z/D+Yg6mwMis+bs/VpcDLA9yE1iZaYq23shQlRIi2KmM9E7JY8zdZjeAPOPdG3gONHoNDEpsgH6D4cqQ/bsA==;EndpointSuffix=core.windows.net"); - CloudBlobClient sourceClient = sourceAccount.CreateCloudBlobClient(); + private async Task UpgradePPCVersion(IWebAppBase sourceApp, IWebAppBase targetApp) + { + var latestPPCVersion = await GetLatestPPCVersion(sourceApp); - var sourceContainer = sourceClient.GetContainerReference("machine-studio-versions-test"); - var sourceBlob = sourceContainer.GetBlockBlobReference("Machine Studio v4.0.34.0.zip"); + var targetDataSource = (await targetApp.GetMachineServiceSettingsAsync()).ToDataSource(); - var targetContainer = sourceClient.GetContainerReference("machine-studio-versions-dev"); + using (var db = ObservablesContext.CreateDefault(targetDataSource)) + { + db.TangoVersions.Add(latestPPCVersion); + await db.SaveChangesAsync(); + } + } - CloudBlockBlob targetBlob = targetContainer.GetBlockBlobReference(sourceBlob.Name); + private CloudBlockBlob CreateEmptyBlob(CloudBlobContainer container, String name) + { + CloudBlockBlob targetBlob = container.GetBlockBlobReference(name); using (MemoryStream ms = new MemoryStream()) { targetBlob.UploadFromStream(ms);//Empty memory stream. Will create an empty blob. } - targetBlob.StartCopy(sourceBlob); + return targetBlob; + } + + #endregion + + #region Validation + + public async Task ValidateUpgrade(IWebAppBase sourceApp, IWebAppBase targetApp) + { + if (UpgradeConfiguration.UpgradeMachineStudio) + { + await ValidateMachineStudioUpgrade(sourceApp, targetApp); + } + + if (UpgradeConfiguration.UpgradePPC) + { + await ValidatePPCUpgrade(sourceApp, targetApp); + } + } + + private async Task ValidateMachineStudioUpgrade(IWebAppBase sourceApp, IWebAppBase targetApp) + { + var sourceSettings = await sourceApp.GetMachineServiceSettingsAsync(); + var targetSettings = await targetApp.GetMachineServiceSettingsAsync(); + + var latestSourceMachineStudioVersion = await GetLatestMachineStudioVersion(sourceApp); + + //Check if there is any source machine studio version. + if (latestSourceMachineStudioVersion == null) + { + throw new ValidationException("Could not locate a Machine Studio version entry on the source database."); + } + + var latestTargetMachineStudioVersion = await GetLatestMachineStudioVersion(targetApp); + + //Check target latest machine studio version is older if there is any. + if (latestTargetMachineStudioVersion != null && Version.Parse(latestSourceMachineStudioVersion.Version) <= Version.Parse(latestTargetMachineStudioVersion.Version)) + { + throw new ValidationException($"Machine Studio source version is '{latestSourceMachineStudioVersion.Version}' while target version is '{latestTargetMachineStudioVersion.Version}'."); + } + + var targetAccount = CloudStorageAccount.Parse(targetSettings.STORAGE_ACCOUNT); + var targetClient = targetAccount.CreateCloudBlobClient(); + + var targetMachineStudioContainer = targetClient.GetContainerReference(targetSettings.MACHINE_STUDIO_VERSIONS_CONTAINER); + + //Check machine studio binaries blob not exists on the target. + var targetMachineStudioBlob = targetMachineStudioContainer.GetBlockBlobReference(latestSourceMachineStudioVersion.BlobName); + if (await targetMachineStudioBlob.ExistsAsync()) + { + throw new ValidationException($"Machine Studio Block blob '{latestSourceMachineStudioVersion.BlobName}' already exists on the target storage."); + } + + //Check machine studio installer blob not exists on the target. + var targetMachineStudioInstallerBlob = targetMachineStudioContainer.GetBlockBlobReference(latestSourceMachineStudioVersion.InstallerBlobName); + if (await targetMachineStudioInstallerBlob.ExistsAsync()) + { + throw new ValidationException($"Machine Studio Block blob '{latestSourceMachineStudioVersion.InstallerBlobName}' already exists on the target storage."); + } + } + + private async Task ValidatePPCUpgrade(IWebAppBase sourceApp, IWebAppBase targetApp) + { + var sourceSettings = await sourceApp.GetMachineServiceSettingsAsync(); + var targetSettings = await targetApp.GetMachineServiceSettingsAsync(); + + var latestSourcePPCVersion = await GetLatestPPCVersion(sourceApp); + + //Check if there is any source PPC version. + if (latestSourcePPCVersion == null) + { + throw new ValidationException("Could not locate a PPC version entry on the source database."); + } + + var latestTargetPPCVersion = await GetLatestPPCVersion(targetApp); + + //Check target latest PPC version is older if there is any. + if (latestTargetPPCVersion != null && Version.Parse(latestSourcePPCVersion.Version) <= Version.Parse(latestTargetPPCVersion.Version)) + { + throw new ValidationException($"PPC source version is '{latestSourcePPCVersion.Version}' while target version is '{latestTargetPPCVersion.Version}'."); + } + + var targetAccount = CloudStorageAccount.Parse(targetSettings.STORAGE_ACCOUNT); + var targetClient = targetAccount.CreateCloudBlobClient(); + + var targetPPCContainer = targetClient.GetContainerReference(targetSettings.TANGO_VERSIONS_CONTAINER); + + //Check PPC binaries blob not exists on the target. + var targetPPCBlob = targetPPCContainer.GetBlockBlobReference(latestSourcePPCVersion.BlobName); + if (await targetPPCBlob.ExistsAsync()) + { + throw new ValidationException($"PPC Block blob '{latestSourcePPCVersion.BlobName}' already exists on the target storage."); + } + + //Check PPC installer blob not exists on the target. + var targetPPCInstallerBlob = targetPPCContainer.GetBlockBlobReference(latestSourcePPCVersion.InstallerBlobName); + if (await targetPPCInstallerBlob.ExistsAsync()) + { + throw new ValidationException($"PPC Block blob '{latestSourcePPCVersion.InstallerBlobName}' already exists on the target storage."); + } + } + + #endregion + + #region Virtual Methods + + protected virtual void OnProgress(DeploymentStage stage, String message = null, double progress = 0, double maximum = 100, bool indeterminate = true) + { + DeploymentProgress?.Invoke(this, new DeploymentProgressEventArgs() + { + Stage = stage, + Message = message, + Progress = progress, + Maximum = maximum, + IsIndeterminate = indeterminate, + }); } + #endregion } } diff --git a/Software/Visual_Studio/Azure/Tango.AzureUtils/Deployment/DeploymentProgressEventArgs.cs b/Software/Visual_Studio/Azure/Tango.AzureUtils/Deployment/DeploymentProgressEventArgs.cs new file mode 100644 index 000000000..5fe166464 --- /dev/null +++ b/Software/Visual_Studio/Azure/Tango.AzureUtils/Deployment/DeploymentProgressEventArgs.cs @@ -0,0 +1,17 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Tango.AzureUtils.Deployment +{ + public class DeploymentProgressEventArgs : EventArgs + { + public DeploymentStage Stage { get; set; } + public double Progress { get; set; } + public double Maximum { get; set; } + public bool IsIndeterminate { get; set; } + public String Message { get; set; } + } +} diff --git a/Software/Visual_Studio/Azure/Tango.AzureUtils/Deployment/DeploymentStage.cs b/Software/Visual_Studio/Azure/Tango.AzureUtils/Deployment/DeploymentStage.cs new file mode 100644 index 000000000..531a1ed8c --- /dev/null +++ b/Software/Visual_Studio/Azure/Tango.AzureUtils/Deployment/DeploymentStage.cs @@ -0,0 +1,16 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Tango.AzureUtils.Deployment +{ + public enum DeploymentStage + { + Ready, + Initializing, + DownloadingFTP, + UploadingFTP, + } +} diff --git a/Software/Visual_Studio/Azure/Tango.AzureUtils/Deployment/ExtensionMethods.cs b/Software/Visual_Studio/Azure/Tango.AzureUtils/Deployment/ExtensionMethods.cs index 6b57ce53a..b9437e49e 100644 --- a/Software/Visual_Studio/Azure/Tango.AzureUtils/Deployment/ExtensionMethods.cs +++ b/Software/Visual_Studio/Azure/Tango.AzureUtils/Deployment/ExtensionMethods.cs @@ -5,14 +5,15 @@ using System.Linq; using System.Text; using System.Threading.Tasks; using Tango.AzureUtils.Deployment; +using Tango.Core; public static class ExtensionMethods { - public static MachineServiceSettings GetMachineServiceSettings(this IWebAppBase app) + public static async Task<MachineServiceSettings> GetMachineServiceSettingsAsync(this IWebAppBase app) { MachineServiceSettings settings = new MachineServiceSettings(); - var s = app.GetAppSettings(); + var s = await app.GetAppSettingsAsync(); settings.DB_ADDRESS = s[nameof(MachineServiceSettings.DB_ADDRESS)].Value; settings.DB_CATALOG = s[nameof(MachineServiceSettings.DB_CATALOG)].Value; @@ -24,4 +25,17 @@ public static class ExtensionMethods return settings; } + + public static DataSource ToDataSource(this MachineServiceSettings settings) + { + DataSource dataSource = new DataSource(); + dataSource.Type = DataSourceType.SQLServer; + dataSource.Address = settings.DB_ADDRESS; + dataSource.Catalog = settings.DB_CATALOG; + dataSource.UserName = settings.DB_USER_NAME; + dataSource.Password = settings.DB_PASSWORD; + dataSource.IntegratedSecurity = false; + + return dataSource; + } } diff --git a/Software/Visual_Studio/Azure/Tango.AzureUtils/Deployment/UpgradeConfiguration.cs b/Software/Visual_Studio/Azure/Tango.AzureUtils/Deployment/UpgradeConfiguration.cs new file mode 100644 index 000000000..233034d0d --- /dev/null +++ b/Software/Visual_Studio/Azure/Tango.AzureUtils/Deployment/UpgradeConfiguration.cs @@ -0,0 +1,15 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Tango.AzureUtils.Deployment +{ + public class UpgradeConfiguration + { + public bool UpgradeMachineService { get; set; } + public bool UpgradeMachineStudio { get; set; } + public bool UpgradePPC { get; set; } + } +} diff --git a/Software/Visual_Studio/Azure/Tango.AzureUtils/Tango.AzureUtils.csproj b/Software/Visual_Studio/Azure/Tango.AzureUtils/Tango.AzureUtils.csproj index 7643f389c..d3dc6a69f 100644 --- a/Software/Visual_Studio/Azure/Tango.AzureUtils/Tango.AzureUtils.csproj +++ b/Software/Visual_Studio/Azure/Tango.AzureUtils/Tango.AzureUtils.csproj @@ -31,6 +31,15 @@ <WarningLevel>4</WarningLevel> </PropertyGroup> <ItemGroup> + <Reference Include="EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089, processorArchitecture=MSIL"> + <HintPath>..\..\packages\EntityFramework.6.2.0\lib\net45\EntityFramework.dll</HintPath> + </Reference> + <Reference Include="EntityFramework.SqlServer, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089, processorArchitecture=MSIL"> + <HintPath>..\..\packages\EntityFramework.6.2.0\lib\net45\EntityFramework.SqlServer.dll</HintPath> + </Reference> + <Reference Include="FluentFTP, Version=30.0.0.0, Culture=neutral, PublicKeyToken=f4af092b1d8df44f, processorArchitecture=MSIL"> + <HintPath>..\..\packages\FluentFTP.30.0.0\lib\net45\FluentFTP.dll</HintPath> + </Reference> <Reference Include="Hyak.Common, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL"> <HintPath>..\..\packages\Hyak.Common.1.2.2\lib\net452\Hyak.Common.dll</HintPath> </Reference> @@ -155,6 +164,7 @@ <HintPath>..\..\packages\Newtonsoft.Json.10.0.3\lib\net45\Newtonsoft.Json.dll</HintPath> </Reference> <Reference Include="System" /> + <Reference Include="System.ComponentModel.DataAnnotations" /> <Reference Include="System.Core" /> <Reference Include="System.Drawing" /> <Reference Include="System.IdentityModel" /> @@ -163,6 +173,7 @@ <Reference Include="System.Runtime" /> <Reference Include="System.Runtime.Serialization" /> <Reference Include="System.Security" /> + <Reference Include="System.Web" /> <Reference Include="System.Windows.Forms" /> <Reference Include="System.Xml.Linq" /> <Reference Include="System.Data.DataSetExtensions" /> @@ -174,13 +185,34 @@ <ItemGroup> <Compile Include="AzureUtilsCredentials.cs" /> <Compile Include="Deployment\DeploymentManager.cs" /> + <Compile Include="Deployment\DeploymentProgressEventArgs.cs" /> + <Compile Include="Deployment\DeploymentStage.cs" /> <Compile Include="Deployment\ExtensionMethods.cs" /> <Compile Include="Deployment\MachineServiceSettings.cs" /> + <Compile Include="Deployment\UpgradeConfiguration.cs" /> <Compile Include="Properties\AssemblyInfo.cs" /> </ItemGroup> <ItemGroup> + <Content Include="..\..\..\DB\SQLExaminer Projects\GENERAL_ENV_UPGRADE.sdeproj"> + <Link>Deployment\GENERAL_ENV_UPGRADE.sdeproj</Link> + <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> + </Content> + <Content Include="..\..\..\DB\SQLExaminer Projects\GENERAL_ENV_UPGRADE.seproj"> + <Link>Deployment\GENERAL_ENV_UPGRADE.seproj</Link> + <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> + </Content> <None Include="app.config" /> <None Include="packages.config" /> </ItemGroup> + <ItemGroup> + <ProjectReference Include="..\..\Tango.BL\Tango.BL.csproj"> + <Project>{f441feee-322a-4943-b566-110e12fd3b72}</Project> + <Name>Tango.BL</Name> + </ProjectReference> + <ProjectReference Include="..\..\Tango.Core\Tango.Core.csproj"> + <Project>{a34ee0f0-649d-41c8-8489-b6f1cc6924ee}</Project> + <Name>Tango.Core</Name> + </ProjectReference> + </ItemGroup> <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" /> </Project>
\ No newline at end of file diff --git a/Software/Visual_Studio/Azure/Tango.AzureUtils/app.config b/Software/Visual_Studio/Azure/Tango.AzureUtils/app.config index dde2c3cc6..0c152335c 100644 --- a/Software/Visual_Studio/Azure/Tango.AzureUtils/app.config +++ b/Software/Visual_Studio/Azure/Tango.AzureUtils/app.config @@ -1,11 +1,25 @@ <?xml version="1.0" encoding="utf-8"?> <configuration> + <configSections> + <!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 --> + <section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" /> + </configSections> <runtime> <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> <dependentAssembly> <assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral" /> <bindingRedirect oldVersion="0.0.0.0-10.0.0.0" newVersion="10.0.0.0" /> </dependentAssembly> + <dependentAssembly> + <assemblyIdentity name="Microsoft.IdentityModel.Clients.ActiveDirectory" publicKeyToken="31bf3856ad364e35" culture="neutral" /> + <bindingRedirect oldVersion="0.0.0.0-4.3.0.0" newVersion="4.3.0.0" /> + </dependentAssembly> </assemblyBinding> </runtime> + <entityFramework> + <defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework" /> + <providers> + <provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" /> + </providers> + </entityFramework> </configuration>
\ No newline at end of file diff --git a/Software/Visual_Studio/Azure/Tango.AzureUtils/packages.config b/Software/Visual_Studio/Azure/Tango.AzureUtils/packages.config index 9f49cc92c..9d0723d02 100644 --- a/Software/Visual_Studio/Azure/Tango.AzureUtils/packages.config +++ b/Software/Visual_Studio/Azure/Tango.AzureUtils/packages.config @@ -1,5 +1,7 @@ <?xml version="1.0" encoding="utf-8"?> <packages> + <package id="EntityFramework" version="6.2.0" targetFramework="net461" /> + <package id="FluentFTP" version="30.0.0" targetFramework="net461" /> <package id="Hyak.Common" version="1.2.2" targetFramework="net461" /> <package id="Microsoft.Azure.Common" version="2.2.1" targetFramework="net461" /> <package id="Microsoft.Azure.KeyVault" version="3.0.1" targetFramework="net461" /> |
